container.add_actor(this.actor);
this.actor.raise_top();
- this._destroySignalId = this.actor.connect('destroy', Lang.bind(this, this.destroy));
+ this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
if (width && height) {
this.actor.width = width;
/**
* destroy:
*
- * Destroys the lightbox. This is called automatically if the
- * lightbox's container is destroyed.
+ * Destroys the lightbox.
*/
destroy : function() {
+ this.actor.destroy();
+ },
+
+ /**
+ * _onDestroy:
+ *
+ * This is called when the lightbox' actor is destroyed, either
+ * by destroying its container or by explicitly calling this.destroy().
+ */
+ _onDestroy: function() {
if (this._allocationChangedSignalId != 0)
this._container.disconnect(this._allocationChangedSignalId);
this._container.disconnect(this._actorAddedSignalId);
this._container.disconnect(this._actorRemovedSignalId);
- this.actor.disconnect(this._destroySignalId);
-
this.highlight(null);
- this.actor.destroy();
}
};
this.actor = new Clutter.Group();
this.actor._delegate = this;
+
+ this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
+
// Auto-sizing is unreliable in the presence of ClutterClone, so rather than
// implicitly counting on the workspace actor to be sized to the size of the
// included desktop actor clone, set the size explicitly to the screen size.
},
destroy : function() {
- Tweener.removeTweens(this.actor);
this.actor.destroy();
- this.actor = null;
- this._windowOverlaysGroup.destroy();
+ },
+
+ _onDestroy: function(actor) {
+ Tweener.removeTweens(actor);
this._metaWorkspace.disconnect(this._windowAddedId);
this._metaWorkspace.disconnect(this._windowRemovedId);
this.actor = new St.Bin({ style_class: "workspaces" });
this._actor = new Clutter.Group();
+ this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
+
this.actor.add_actor(this._actor);
this.actor.connect('style-changed', Lang.bind(this,
function() {
},
destroy: function() {
+ this.actor.destroy();
+ },
+
+ _onDestroy: function() {
for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].destroy();
this._workspaces = [];
- this.actor.destroy();
- this.actor = null;
-
Main.overview.disconnect(this._overviewShowingId);
global.screen.disconnect(this._nWorkspacesNotifyId);
global.window_manager.disconnect(this._switchWorkspaceNotifyId);